iT邦幫忙

2024 iThome 鐵人賽

DAY 2
1
佛心分享-SideProject30

用 Golang 實作 streamlit 系列 第 2

Day2 Streamlit 的基本運作方式

  • 分享至 

  • xImage
  •  

要做到 Streamlit 的功能,至少要考慮以下兩種機制:

當使用者互動,便更新畫面

讓我們看一個簡單的例子:使用者輸入名字後,立即顯示問候訊息。

import streamlit as st

name = st.text_input('Your name')

if name:
    st.write(f'Hello, {name}!')

這段程式碼會在你的網頁上產生一個標籤為「Your name」的輸入框。當使用者輸入名字並離開輸入框時,網頁會自動更新,顯示「Hello, [name]!」的問候訊息。

每次使用者與應用程式互動(例如,輸入文字並且 unfocus、或點擊按鈕),Streamlit 就會從頭開始執行整個腳本,重新渲染整個頁面。

及時傳送更新

讓我們看另一個需要長時間執行的腳本:

  • 模擬一個長時間運算的過程。
  • 雖然運算需要 5 秒鐘,但由於使用了 time.sleep 和 st.text,每隔一秒就會在網頁上顯示一個數字,讓使用者看到進度。
import streamlit as st
import time

for i in range(5):
    time.sleep(1)
    st.text(str(i))

他的執行結果並不是等待五秒後一口氣在網頁上顯示 5 行 12345,而是隨著時間,12345 訊息一行一行逐條顯示。

要做到這樣,代表只在【執行完 script 才回傳 JSON response】是不夠的,使用者會感覺程式卡住,我們最後會需要 Websocket 的機制來讓 Server 在跑腳本時,主動傳送訊息讓 Client 知道需要變動畫面。

而 Streamlit 也確實使用 Websocket 做到這件事。


上一篇
Day1 起因:個人小工具
下一篇
Day3 介面的初步想法
系列文
用 Golang 實作 streamlit 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言